A computer includes a CPU (Central Processing Unit) and various devices as main components. As an example of the device, a display, a printer, a hard disk drive, a network interface card or the like is exemplified. The CPU and the device are connected to each other through a system bus (hereinafter, denoted as “bus”). By the CPU's executing a predetermined program, access to the device is executed. To access the device is referred to as an input/output (I/O) process. The device is controlled by software of an operating system (hereinafter, denoted as “OS”) which the CPU executes. Especially, software, which controls the device, out of OS is denoted as a device driver.
While executing OS, a user can use one or more pieces of application software in order to achieve a predetermined aim. This is executed by OS's control. In order to prevent the application software from directly accessing the device, OS generally has high level execution authority in comparison with the application software.
When the computer is activated, the device is scanned by BIOS (Basic Input/Output System), and is assigned an identifier (ID), a memory area and the like. At this point of time, the device is not in an available state. After OS is activated, a device driver relating to a device, which OS can control, out of the scanned devices initializes the device. By executing the initialization, the device enters into the available state.
As a method of a working OS's accessing the device, two methods are known. That is, one is a method of access by issuing an I/O command, and the other is a method of access by MMIO (Memory-Mapped I/O).
In the case of the method of access by issuing the I/O command, an I/O command, which is defined by a CPU command set, is used. By OS's issuing an CPU command, the I/O command is outputted on the bus, and consequently access to the device is executed.
Meanwhile, in the case of the method of access by MMIO, when OS accesses a specific memory address, a chipset, which controls CPU or the bus, converts the memory address into the I/O command and outputs the I/O command on the bus, and consequently access to the device is executed.
As mentioned above, when BIOS scans the device, a memory space size, which the device requests, is assigned in physical memory space. Consequently, memory access to the assigned physical memory space is converted into the I/O command. Hereinafter, the above-mentioned two methods (methods of the working OS's accessing the device) are referred to as “I/O command” collectively.
Generally, a form of the above-mentioned I/O command and a form of the I/O command, which is used on the bus, are different each other. As an example of CPU, a CPU command set based on the Intel (registered trademark) architecture includes an IN (input) command and an OUT (output) command. As an example of the bus, PCI (Peripheral Component Interconnect) Express® (registered trademark: hereinafter, description of “registered trademark” is omitted.) is exemplified. I/O commands of PCI (Peripheral Component Interconnect) Express include an I/O Read request and an I/O Write request.
OS makes data transmitted/received to/from the device through the I/O command.
At this time, OS has a function to make data transferred directly between memories, or a memory and an I/O device. More specifically, the function is called DMA (Direct Memory Access) that the device takes the lead in directly reading/writing data from/in a memory designated by OS, and the device includes DMAC (DMA control unit) which executes the function. Since a load of CPU becomes decreasing when the device uses DMA, DMA is a mandatory function for a high-performance system. Each of patent literatures (PTL) 1 and 2 discloses an art of a data transfer system based on DMA.
Furthermore, PTL 3 discloses an art for extending a distance between CPU and the device by extending the bus virtually. The art makes it possible to physically extend the distance between CPU and the device by transferring data, which flow through a PCI Express interface, to a network such as Ethernet (registered trademark: hereinafter, description of “registered trademark” is omitted.), or the like. Here, the PCI Express interface transfers the data in a form of TLP (Transaction Layer Packet).